/*****************************************************************************/
/*                        >>> func_config.c <<<                              */
/*	Trabajo Practico 2do. cuatrimestre 2011                                  */
/*	TP:"FUSELAJE"                                                            */
/*	GRUPO: Reduce Fat Fast                                                   */
/*	INTEGRANTES: Emanuel Genovese                                            */
/*               Federico Gabriel Garcia                                     */
/*               Federico Pioli                                              */
/*               Esther Insfrain                                             */
/*               Luciano Bagattin                                            */
/*	Fecha UM:                                                                */
/*****************************************************************************/
/*****************************************************************************/
/*		        	Include		                                             */
/*****************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include "../headers/estructuras.h"
#include "../headers/func_config.h"
#include "../headers/constantes.h"
#include "func_strings.h"
#include "log.h"
#include "string.h"
/*****************************************************************************/
/*		        	Define		                                             */
/*****************************************************************************/




/******************************************************************************/
/* Nombre de Funcion: ifCargaArchivo                                          */
/* Parametros: puntero: cmrMatriz de lineas de arch config                    */
/*																			  */
/*	                                                                          */
/* Descripcion: Funcion que levanta los datos del archivo de configuracion    */
/******************************************************************************/

int ifCargaArchivo(char cmrMatriz [][80+2])
{
    FILE * pstArchi;
    int iFila,iLong;
    char szLinea[80+2];


	iFila=0;
	if ((pstArchi = fopen(ConfigRAID,"rt"))==NULL)
	    return (1);

	while((fgets(szLinea, 80, pstArchi))!=NULL)
	{
	    iLong=strlen(szLinea);
	    if(szLinea[iLong-1]=='\n')
		szLinea[iLong-1]='\0';

	    if(szLinea[0] != '#')
	    {
		bzero(cmrMatriz[iFila],82);
		strncpy(cmrMatriz[iFila],szLinea,strlen(szLinea));
		cmrMatriz[iFila][strlen(cmrMatriz[iFila])]='\0';
		iFila++;
	    }
	}
	fclose(pstArchi);
	return (EXIT_SUCCESS);
}//fin del fCargaConfig
/******************************************************************************/
/* Nombre de Procedimiento: pCargaArchConfig                                  */
/* Parametros: stInfoConfig:estructura de arch config                         */
/*                                                                            */
/*	                                                                          */
/* Descripcion:Procedimiento que carga el archivo de configuracion en una     */
/* struct                                                                     */
/******************************************************************************/

int fLoadConfig(datosConfig * st, t_log * log){
 /* comienzo de declaracion de variables globales */


	 char sAux[1000]="\0";

     char cmConfig[3][80+2];

     /* fin de declaracion de variables locales */


     if (ifCargaArchivo(cmConfig)){
	  	log_error(log, SNOMBREPROCESO, "Message error: %s", "No se pudo abrir el archivo");
	  	return 1;
     }
	 log_info(log, SNOMBREPROCESO, "Message info: %s", "El archivo de configuracion se abrio con exito");
/*	 puts(cmConfig[0]);
	 puts(cmConfig[1]);
	 puts(cmConfig[2]);
	 puts(cmConfig[3]);
	 puts(cmConfig[4]);*/


    if (strlen(cmConfig[0]) == 0){
	  	printf ("No se pudo obtener los datos del archivo\n\n");
	  	log_error(log, SNOMBREPROCESO, "Message error: %s", "No se pudo obtener la ip local");
	  	return 1;
	}

	strcpy(st->sIp,cmConfig[0]);
	log_info(log, SNOMBREPROCESO, "Message info: %s", "Se obtuvo con exito la ip local");


	//asignacion PuertoLocal
	if (strlen(cmConfig[1]) == 0){
		printf ("No se pudo obtener los datos del archivo\n\n");
		log_error(log, SNOMBREPROCESO, "Message error: %s", "No se pudo obtener el Puerto local");
		return 1;
	}

	st->iPuerto=atoi(cmConfig[1]);
	log_info(log, SNOMBREPROCESO, "Message info: %s", "Se obtuvo con exito la Puerto Local");


    //asignacion flag de logs
    if (strlen(cmConfig[4]) == 0){
     	printf ("No se pudo obtener los datos del archivo\n\n");
       	log_error(log, SNOMBREPROCESO, "Message error: %s", "No se pudo obtener el flag de logs");
       	return 1;
    }
    strcpy(st->sLogs,cmConfig[4]);
    log_info(log, SNOMBREPROCESO, "Message info: %s", "Se obtuvo con exito el flag de logs");
    printf("Logs:%s",st->sLogs);


	log_info(log, SNOMBREPROCESO, "Message info: %s", "El archivo de Config. se cerro exitosamente");

  return EXIT_SUCCESS;

}


